{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "4d2ea6f4",
   "metadata": {},
   "source": [
    "# Protein Folding"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "aa2fe29c",
   "metadata": {},
   "source": [
    "### Introduction"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ffa82037",
   "metadata": {},
   "source": [
    "The structure and function of many natural and human-engineered\n",
    "proteins is still only poorly understood. As a result, our understanding of\n",
    "processes connected with protein folding, such as those encountered in\n",
    "Alzheimer’s disease, vaccine development, and crop improvement\n",
    "research, has remained limited.\n",
    "\n",
    "Unfolded polypeptides have a very large number of degrees of freedom\n",
    "and thus an enormous number of potential conformations. For example, a\n",
    "chain with $100$ aminoacids has on the order of $10^{47}$ conformations. In\n",
    "reality, however, many proteins fold to their native structure within\n",
    "seconds. This is known as Levinthal’s paradox [1].\n",
    "\n",
    "The exponential growth of potential conformations with chain length\n",
    "makes the problem intractable for classical computers. In the quantum\n",
    "framework, our resource-efficient algorithm scales linearly with\n",
    "the number of aminoacids N."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "58f24401",
   "metadata": {},
   "source": [
    "The goal of this work is to determine the minimum energy conformation of a protein. Starting from a random configuration, the protein's structure is optimized to lower the energy. This can be achieved by encoding the protein folding problem into a qubit operator and ensuring that all physical constraints are satisfied. "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "76928cec",
   "metadata": {},
   "source": [
    "For the problem encoding we use: \n",
    "\n",
    "- Configuration qubits: qubits that are used to describe the configurations and the relative position of the different beads\n",
    "\n",
    "- Interaction qubits: qubits that encode interactions between the different aminoacids\n",
    "\n",
    "For our case we use a tetrahedral lattice (diamond shape lattice) where we encode the movement through the configuration qubits (see image below). \n",
    "\n",
    "<img src=\"aux_files/lattice_protein.png\" width=\"300\">"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "50dc1324",
   "metadata": {},
   "source": [
    "The Hamiltonian of the system for a set of qubits $\\mathbf{q}=\\{\\mathbf{q}_{cf}, \\mathbf{q}_{in}\\}$ is \n",
    "\n",
    "$$H(\\mathbf{q}) = H_{gc}(\\mathbf{q}_{cf}) + H_{ch}(\\mathbf{q}_{cf}) + H_{in}(\\mathbf{q}_{cf}, \\mathbf{q}_{in}) $$\n",
    "\n",
    "where \n",
    "\n",
    "- $H_{gc}$ is the geometrical constraint term (governing the growth of the primary sequence of aminoacids without bifurcations)\n",
    "\n",
    "- $H_{ch}$ is the chirality constraint (enforcing the right stereochemistry for the system)\n",
    "\n",
    "- $H_{in}$ is the interaction energy terms of the system. In our case we consider only nearest neighbor interactions. "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0d7f4dbb",
   "metadata": {},
   "source": [
    "Further details about the used model and the encoding of the problem can be found in [2]."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "4a022975",
   "metadata": {},
   "outputs": [],
   "source": [
    "from qiskit_nature.problems.sampling.protein_folding.interactions.random_interaction import (\n",
    "    RandomInteraction,\n",
    ")\n",
    "from qiskit_nature.problems.sampling.protein_folding.interactions.miyazawa_jernigan_interaction import (\n",
    "    MiyazawaJerniganInteraction,\n",
    ")\n",
    "from qiskit_nature.problems.sampling.protein_folding.peptide.peptide import Peptide\n",
    "from qiskit_nature.problems.sampling.protein_folding.protein_folding_problem import (\n",
    "    ProteinFoldingProblem,\n",
    ")\n",
    "\n",
    "from qiskit_nature.problems.sampling.protein_folding.penalty_parameters import PenaltyParameters\n",
    "\n",
    "from qiskit.utils import algorithm_globals, QuantumInstance\n",
    "\n",
    "algorithm_globals.random_seed = 23"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "51e540f5",
   "metadata": {},
   "source": [
    "### Protein Main Chain"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "15a69286",
   "metadata": {},
   "source": [
    "The Protein consists of a main chain that is a linear chain of aminoacids. For the naming of different residues we use the one-letter code as defined in Ref. [3]. Further details about the naming and the type of aminoacids can also be found in [4].\n",
    "\n",
    "For this particular case we demonstrate the generation of the qubit operator in a neuropeptide with the main chain consisting of 7 aminoacids with letter codes APRLRFY (see also [2])."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "b78d077a",
   "metadata": {},
   "outputs": [],
   "source": [
    "main_chain = \"APRLRFY\""
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2b28a00e",
   "metadata": {},
   "source": [
    "### Side Chains"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b99c81a8",
   "metadata": {},
   "source": [
    "Beyond the main chain of the protein there may be aminoacids attached to the residues of the main chain. Our model allows for side chains of the maximum length of one. Elongated side chains would require the introduction of additional penalty terms which are still under development. In this example we do not consider any side chains to keep the real structure of the neuropeptide. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "f0cea914",
   "metadata": {},
   "outputs": [],
   "source": [
    "side_chains = [\"\"] * 7"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "203e288b",
   "metadata": {},
   "source": [
    "### Interaction between Aminoacids"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "72ff748d",
   "metadata": {},
   "source": [
    "For the description of inter-residue contacts for proteins we use knowledge-based (statistical) potentials derived using quasi-chemical approximation. The potentials used here are introduced by Miyazawa, S. and Jernigan, R. L. in [5]. \n",
    "\n",
    "Beyond this model we also allow for random contact maps (interactions) that provide a random interaction map. One can also introduce a custom interaction map that enhances certain configurations of the protein (e.g. alpha helix, beta sheet etc). "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "cca5df13",
   "metadata": {},
   "outputs": [],
   "source": [
    "random_interaction = RandomInteraction()\n",
    "mj_interaction = MiyazawaJerniganInteraction()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bb5c3ec8",
   "metadata": {},
   "source": [
    "### Physical Constraints"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5adb4c73",
   "metadata": {},
   "source": [
    "To ensure that all physical constraints are respected we introduce penalty functions. The different penalty terms used are: \n",
    "\n",
    "- penalty_chiral: A penalty parameter used to impose the right chirality.\n",
    "\n",
    "- penalty_back: A penalty parameter used to penalize turns along the same axis. This term is used to eliminate sequences where the same axis is chosen twice in a row. In this way we do not allow for a chain to fold back into itself.\n",
    "\n",
    "- penalty_1: A penalty parameter used to penalize local overlap between beads within a nearest neighbor contact."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "d96678c3",
   "metadata": {},
   "outputs": [],
   "source": [
    "penalty_back = 10\n",
    "penalty_chiral = 10\n",
    "penalty_1 = 10\n",
    "\n",
    "penalty_terms = PenaltyParameters(penalty_chiral, penalty_back, penalty_1)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "29807064",
   "metadata": {},
   "source": [
    "### Peptide Definition\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3eafb4dd",
   "metadata": {},
   "source": [
    "Based on the main chain and possible side chains we define the peptide object that includes all the structural information of the modeled system."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "94b24aec",
   "metadata": {},
   "outputs": [],
   "source": [
    "peptide = Peptide(main_chain, side_chains)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "48deb63f",
   "metadata": {},
   "source": [
    "### Protein Folding Problem "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "729f35c0",
   "metadata": {},
   "source": [
    "Based on the defined peptide, the interaction (contact map) and the penalty terms we defined for our model we define the protein folding problem that returns qubit operators.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "8d0408ed",
   "metadata": {},
   "outputs": [],
   "source": [
    "protein_folding_problem = ProteinFoldingProblem(peptide, mj_interaction, penalty_terms)\n",
    "qubit_op = protein_folding_problem.qubit_op()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "29860ed3",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1613.5895000000003 * IIIIIIIII\n",
      "- 701.802 * ZIIIIIIII\n",
      "- 904.2875 * IZIIIIIII\n",
      "+ 192.5 * IIZIIIIII\n",
      "- 200.0 * ZIZIIIIII\n",
      "+ 7.5 * IZZIIIIII\n",
      "+ 105.0 * IIIZIIIII\n",
      "- 105.0 * ZIIZIIIII\n",
      "+ 95.0 * IIZZIIIII\n",
      "- 100.0 * ZIZZIIIII\n",
      "+ 5.0 * IZZZIIIII\n",
      "- 497.5 * IIIIZIIII\n",
      "+ 195.0 * ZIIIZIIII\n",
      "+ 302.5 * IZIIZIIII\n",
      "- 95.0 * IIZIZIIII\n",
      "+ 100.0 * ZIZIZIIII\n",
      "- 2.5 * IZZIZIIII\n",
      "- 100.0 * IIIIIZIII\n",
      "+ 102.5 * ZIIIIZIII\n",
      "- 2.5 * IZIIIZIII\n",
      "- 95.0 * IIIZIZIII\n",
      "+ 100.0 * ZIIZIZIII\n",
      "- 2.5 * IZIZIZIII\n",
      "- 300.0 * IIIIZZIII\n",
      "+ 97.5 * ZIIIZZIII\n",
      "+ 202.5 * IZIIZZIII\n",
      "- 95.0 * IIZZZZIII\n",
      "+ 100.0 * ZIZZZZIII\n",
      "- 2.5 * IZZZZZIII\n",
      "+ 487.5 * IIIIIIZII\n",
      "- 195.0 * ZIIIIIZII\n",
      "- 295.0 * IZIIIIZII\n",
      "+ 97.5 * IIZIIIZII\n",
      "- 100.0 * ZIZIIIZII\n",
      "+ 2.5 * IZZIIIZII\n",
      "- 195.0 * IIIIZIZII\n",
      "+ 97.5 * ZIIIZIZII\n",
      "+ 100.0 * IZIIZIZII\n",
      "+ 100.0 * IIIIIIIZI\n",
      "- 102.5 * ZIIIIIIZI\n",
      "+ 2.5 * IZIIIIIZI\n",
      "+ 97.5 * IIIZIIIZI\n",
      "- 100.0 * ZIIZIIIZI\n",
      "+ 2.5 * IZIZIIIZI\n",
      "- 195.0 * IIIIIZIZI\n",
      "+ 97.5 * ZIIIIZIZI\n",
      "+ 100.0 * IZIIIZIZI\n",
      "+ 295.0 * IIIIIIZZI\n",
      "- 97.5 * ZIIIIIZZI\n",
      "- 197.5 * IZIIIIZZI\n",
      "+ 97.5 * IIZZIIZZI\n",
      "- 100.0 * ZIZZIIZZI\n",
      "+ 2.5 * IZZZIIZZI\n",
      "- 195.0 * IIIIZZZZI\n",
      "+ 97.5 * ZIIIZZZZI\n",
      "+ 100.0 * IZIIZZZZI\n",
      "+ 195.0 * IIIIIIIIZ\n",
      "+ 5.0 * ZIIIIIIIZ\n",
      "- 200.0 * IZIIIIIIZ\n",
      "- 97.5 * IIIZIIIIZ\n",
      "+ 100.0 * ZIIZIIIIZ\n",
      "- 2.5 * IZIZIIIIZ\n",
      "+ 97.5 * IIZZIIIIZ\n",
      "- 100.0 * ZIZZIIIIZ\n",
      "+ 2.5 * IZZZIIIIZ\n",
      "+ 197.5 * IIIIIZIIZ\n",
      "- 97.5 * ZIIIIZIIZ\n",
      "- 100.0 * IZIIIZIIZ\n",
      "- 197.5 * IIIIZZIIZ\n",
      "+ 97.5 * ZIIIZZIIZ\n",
      "+ 100.0 * IZIIZZIIZ\n",
      "- 192.5 * IIIIIIIZZ\n",
      "+ 97.5 * ZIIIIIIZZ\n",
      "+ 97.5 * IZIIIIIZZ\n",
      "+ 192.5 * IIIIIIZZZ\n",
      "- 97.5 * ZIIIIIZZZ\n",
      "- 97.5 * IZIIIIZZZ\n"
     ]
    }
   ],
   "source": [
    "print(qubit_op)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "441ccc74",
   "metadata": {},
   "source": [
    "### Using VQE with CVaR expectation value for the solution of the problem"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e99e05de",
   "metadata": {},
   "source": [
    "The problem that we are tackling has now implemented all the physical constraints and has a diagonal Hamiltonian. For the particular case we are targeting the single bitstring that gives us the minimum energy (corresponding to the folded structure of the protein). Thus, we can use the Variational Quantum Eigensolver with Conditional Value at Risk (CVaR) expectation values for the solution of the problem and for finding the minimum configuration energy [6] . We follow the same approach as in Ref. [2] but here we use COBYLA for the classical optimization part. One can also use the standard VQE or QAOA algorithm for the solution of the problem, though as discussed in Ref. [2] CVaR is more suitable. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "5eb95499",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{   'aux_operator_eigenvalues': None,\n",
      "    'cost_function_evals': 50,\n",
      "    'eigenstate': {   '000000010': 0.011048543456039806,\n",
      "                      '000000011': 0.03125,\n",
      "                      '000000100': 0.011048543456039806,\n",
      "                      '000000101': 0.02209708691207961,\n",
      "                      '000001011': 0.011048543456039806,\n",
      "                      '000001101': 0.019136638615493577,\n",
      "                      '000010011': 0.024705294220065465,\n",
      "                      '000010100': 0.011048543456039806,\n",
      "                      '000010101': 0.02209708691207961,\n",
      "                      '000011011': 0.015625,\n",
      "                      '000011101': 0.02209708691207961,\n",
      "                      '000100010': 0.04133986423538423,\n",
      "                      '000100011': 0.10004881620988826,\n",
      "                      '000100100': 0.046875,\n",
      "                      '000100101': 0.08267972847076846,\n",
      "                      '000100111': 0.011048543456039806,\n",
      "                      '000110010': 0.019136638615493577,\n",
      "                      '000110011': 0.04419417382415922,\n",
      "                      '000110100': 0.015625,\n",
      "                      '000110101': 0.036643873123620545,\n",
      "                      '000110110': 0.011048543456039806,\n",
      "                      '000111011': 0.011048543456039806,\n",
      "                      '001000010': 0.029231698334171417,\n",
      "                      '001000011': 0.0897587913521567,\n",
      "                      '001000100': 0.03125,\n",
      "                      '001000101': 0.07328774624724109,\n",
      "                      '001000110': 0.011048543456039806,\n",
      "                      '001001010': 0.019136638615493577,\n",
      "                      '001001011': 0.04419417382415922,\n",
      "                      '001001100': 0.034938562148434216,\n",
      "                      '001001101': 0.04555431167847891,\n",
      "                      '001001111': 0.011048543456039806,\n",
      "                      '001010010': 0.036643873123620545,\n",
      "                      '001010011': 0.08486547258750168,\n",
      "                      '001010100': 0.03983608994994363,\n",
      "                      '001010101': 0.06442352540027595,\n",
      "                      '001010110': 0.011048543456039806,\n",
      "                      '001011000': 0.015625,\n",
      "                      '001011001': 0.015625,\n",
      "                      '001011010': 0.038273277230987154,\n",
      "                      '001011011': 0.11103648752774918,\n",
      "                      '001011100': 0.07411588266019639,\n",
      "                      '001011101': 0.11267347735824966,\n",
      "                      '001011110': 0.011048543456039806,\n",
      "                      '001011111': 0.015625,\n",
      "                      '001100000': 0.011048543456039806,\n",
      "                      '001100010': 0.120017902310447,\n",
      "                      '001100011': 0.3167677333236452,\n",
      "                      '001100100': 0.1401903003509872,\n",
      "                      '001100101': 0.22453293536249866,\n",
      "                      '001100110': 0.024705294220065465,\n",
      "                      '001100111': 0.034938562148434216,\n",
      "                      '001101010': 0.011048543456039806,\n",
      "                      '001101011': 0.019136638615493577,\n",
      "                      '001101100': 0.015625,\n",
      "                      '001101101': 0.027063293868263706,\n",
      "                      '001101111': 0.015625,\n",
      "                      '001110000': 0.011048543456039806,\n",
      "                      '001110010': 0.0427908248050911,\n",
      "                      '001110011': 0.1254873312828829,\n",
      "                      '001110100': 0.05063078670631141,\n",
      "                      '001110101': 0.0855816496101822,\n",
      "                      '001111011': 0.015625,\n",
      "                      '010000000': 0.011048543456039806,\n",
      "                      '010000010': 0.05412658773652741,\n",
      "                      '010000011': 0.137553256731711,\n",
      "                      '010000100': 0.05846339666834283,\n",
      "                      '010000101': 0.10881553341550093,\n",
      "                      '010000111': 0.02209708691207961,\n",
      "                      '010001000': 0.015625,\n",
      "                      '010001010': 0.024705294220065465,\n",
      "                      '010001011': 0.09882117688026186,\n",
      "                      '010001100': 0.05412658773652741,\n",
      "                      '010001101': 0.10305395279900718,\n",
      "                      '010001110': 0.015625,\n",
      "                      '010001111': 0.02209708691207961,\n",
      "                      '010010000': 0.015625,\n",
      "                      '010010010': 0.05412658773652741,\n",
      "                      '010010011': 0.15896085897949846,\n",
      "                      '010010100': 0.08193819126329309,\n",
      "                      '010010101': 0.12645635981436443,\n",
      "                      '010010110': 0.011048543456039806,\n",
      "                      '010010111': 0.019136638615493577,\n",
      "                      '010011000': 0.015625,\n",
      "                      '010011001': 0.011048543456039806,\n",
      "                      '010011010': 0.07574499777213015,\n",
      "                      '010011011': 0.19764235376052372,\n",
      "                      '010011100': 0.12789613706050704,\n",
      "                      '010011101': 0.20191949973937634,\n",
      "                      '010011110': 0.027063293868263706,\n",
      "                      '010011111': 0.04555431167847891,\n",
      "                      '010100000': 0.011048543456039806,\n",
      "                      '010100010': 0.07733980419227864,\n",
      "                      '010100011': 0.19295451617544482,\n",
      "                      '010100100': 0.09504316453590968,\n",
      "                      '010100101': 0.15428451295415233,\n",
      "                      '010100110': 0.019136638615493577,\n",
      "                      '010100111': 0.011048543456039806,\n",
      "                      '010101101': 0.019136638615493577,\n",
      "                      '010110010': 0.027063293868263706,\n",
      "                      '010110011': 0.08699631816921909,\n",
      "                      '010110100': 0.0427908248050911,\n",
      "                      '010110101': 0.059498227389561786,\n",
      "                      '010110110': 0.011048543456039806,\n",
      "                      '010110111': 0.011048543456039806,\n",
      "                      '011000011': 0.015625,\n",
      "                      '011000101': 0.015625,\n",
      "                      '011001011': 0.015625,\n",
      "                      '011001101': 0.015625,\n",
      "                      '011010011': 0.029231698334171417,\n",
      "                      '011010100': 0.015625,\n",
      "                      '011010101': 0.015625,\n",
      "                      '011011010': 0.011048543456039806,\n",
      "                      '011011011': 0.019136638615493577,\n",
      "                      '011011100': 0.011048543456039806,\n",
      "                      '011011101': 0.03125,\n",
      "                      '011011111': 0.011048543456039806,\n",
      "                      '011100010': 0.015625,\n",
      "                      '011100011': 0.05740991584648074,\n",
      "                      '011100100': 0.024705294220065465,\n",
      "                      '011100101': 0.04133986423538423,\n",
      "                      '011110011': 0.024705294220065465,\n",
      "                      '011110101': 0.015625,\n",
      "                      '100000011': 0.03983608994994363,\n",
      "                      '100000100': 0.02209708691207961,\n",
      "                      '100000101': 0.03125,\n",
      "                      '100001011': 0.019136638615493577,\n",
      "                      '100001100': 0.011048543456039806,\n",
      "                      '100001101': 0.029231698334171417,\n",
      "                      '100010010': 0.015625,\n",
      "                      '100010011': 0.036643873123620545,\n",
      "                      '100010100': 0.024705294220065465,\n",
      "                      '100010101': 0.03125,\n",
      "                      '100011000': 0.011048543456039806,\n",
      "                      '100011010': 0.024705294220065465,\n",
      "                      '100011011': 0.04555431167847891,\n",
      "                      '100011100': 0.036643873123620545,\n",
      "                      '100011101': 0.04555431167847891,\n",
      "                      '100011111': 0.011048543456039806,\n",
      "                      '100100000': 0.011048543456039806,\n",
      "                      '100100010': 0.0427908248050911,\n",
      "                      '100100011': 0.11481983169296148,\n",
      "                      '100100100': 0.046875,\n",
      "                      '100100101': 0.07654655446197431,\n",
      "                      '100100110': 0.015625,\n",
      "                      '100100111': 0.019136638615493577,\n",
      "                      '100101101': 0.011048543456039806,\n",
      "                      '100110010': 0.015625,\n",
      "                      '100110011': 0.03314563036811941,\n",
      "                      '100110100': 0.024705294220065465,\n",
      "                      '100110101': 0.03983608994994363,\n",
      "                      '100111011': 0.011048543456039806,\n",
      "                      '101000010': 0.038273277230987154,\n",
      "                      '101000011': 0.07890238233095373,\n",
      "                      '101000100': 0.03125,\n",
      "                      '101000101': 0.0625,\n",
      "                      '101001011': 0.036643873123620545,\n",
      "                      '101001100': 0.02209708691207961,\n",
      "                      '101001101': 0.04941058844013093,\n",
      "                      '101010010': 0.03125,\n",
      "                      '101010011': 0.06899813176818631,\n",
      "                      '101010100': 0.036643873123620545,\n",
      "                      '101010101': 0.05412658773652741,\n",
      "                      '101010111': 0.011048543456039806,\n",
      "                      '101011000': 0.011048543456039806,\n",
      "                      '101011010': 0.036643873123620545,\n",
      "                      '101011011': 0.09504316453590968,\n",
      "                      '101011100': 0.046875,\n",
      "                      '101011101': 0.08907620508587015,\n",
      "                      '101011110': 0.011048543456039806,\n",
      "                      '101011111': 0.024705294220065465,\n",
      "                      '101100000': 0.015625,\n",
      "                      '101100010': 0.12203515118604147,\n",
      "                      '101100011': 0.2814669302289347,\n",
      "                      '101100100': 0.13395647030845506,\n",
      "                      '101100101': 0.21986323874172325,\n",
      "                      '101100110': 0.02209708691207961,\n",
      "                      '101100111': 0.02209708691207961,\n",
      "                      '101101011': 0.011048543456039806,\n",
      "                      '101101100': 0.024705294220065465,\n",
      "                      '101101101': 0.015625,\n",
      "                      '101101111': 0.011048543456039806,\n",
      "                      '101110000': 0.011048543456039806,\n",
      "                      '101110010': 0.04555431167847891,\n",
      "                      '101110011': 0.10539638721275033,\n",
      "                      '101110100': 0.05524271728019903,\n",
      "                      '101110101': 0.08043461047646094,\n",
      "                      '101110110': 0.011048543456039806,\n",
      "                      '101110111': 0.015625,\n",
      "                      '101111011': 0.015625,\n",
      "                      '110000010': 0.02209708691207961,\n",
      "                      '110000011': 0.06720566614877052,\n",
      "                      '110000100': 0.038273277230987154,\n",
      "                      '110000101': 0.05740991584648074,\n",
      "                      '110001010': 0.02209708691207961,\n",
      "                      '110001011': 0.05182226234930312,\n",
      "                      '110001100': 0.027063293868263706,\n",
      "                      '110001101': 0.04555431167847891,\n",
      "                      '110001111': 0.011048543456039806,\n",
      "                      '110010010': 0.024705294220065465,\n",
      "                      '110010011': 0.08267972847076846,\n",
      "                      '110010100': 0.04941058844013093,\n",
      "                      '110010101': 0.06810779599282303,\n",
      "                      '110010111': 0.015625,\n",
      "                      '110011000': 0.011048543456039806,\n",
      "                      '110011010': 0.04419417382415922,\n",
      "                      '110011011': 0.10245997694221876,\n",
      "                      '110011100': 0.05633673867912483,\n",
      "                      '110011101': 0.09943689110435824,\n",
      "                      '110011110': 0.011048543456039806,\n",
      "                      '110011111': 0.011048543456039806,\n",
      "                      '110100010': 0.03314563036811941,\n",
      "                      '110100011': 0.10768788087570486,\n",
      "                      '110100100': 0.046875,\n",
      "                      '110100101': 0.07890238233095373,\n",
      "                      '110101101': 0.011048543456039806,\n",
      "                      '110110000': 0.011048543456039806,\n",
      "                      '110110010': 0.019136638615493577,\n",
      "                      '110110011': 0.04419417382415922,\n",
      "                      '110110100': 0.019136638615493577,\n",
      "                      '110110101': 0.029231698334171417,\n",
      "                      '111100010': 0.029231698334171417,\n",
      "                      '111100011': 0.05846339666834283,\n",
      "                      '111100100': 0.027063293868263706,\n",
      "                      '111100101': 0.03983608994994363,\n",
      "                      '111101100': 0.011048543456039806,\n",
      "                      '111110011': 0.02209708691207961,\n",
      "                      '111110100': 0.015625,\n",
      "                      '111110101': 0.015625},\n",
      "    'eigenvalue': -1.4029738769529685,\n",
      "    'optimal_parameters': {   ParameterVectorElement(θ[3]): -0.8186867402589327,\n",
      "                              ParameterVectorElement(θ[0]): 2.949180306189535,\n",
      "                              ParameterVectorElement(θ[2]): 0.14444186020294084,\n",
      "                              ParameterVectorElement(θ[1]): 1.3457240264704409,\n",
      "                              ParameterVectorElement(θ[4]): -1.8240547294565919,\n",
      "                              ParameterVectorElement(θ[5]): -0.5827243733538114,\n",
      "                              ParameterVectorElement(θ[6]): -1.2832898975245257,\n",
      "                              ParameterVectorElement(θ[7]): 0.4624546118844573,\n",
      "                              ParameterVectorElement(θ[8]): 0.8545861177349986,\n",
      "                              ParameterVectorElement(θ[9]): 0.9009227496535541,\n",
      "                              ParameterVectorElement(θ[10]): 1.0664066215537364,\n",
      "                              ParameterVectorElement(θ[11]): -1.168411616516486,\n",
      "                              ParameterVectorElement(θ[12]): -0.9257640933096077,\n",
      "                              ParameterVectorElement(θ[13]): 2.4469152902217863,\n",
      "                              ParameterVectorElement(θ[14]): 1.6982911959520248,\n",
      "                              ParameterVectorElement(θ[15]): -0.8473176376463815,\n",
      "                              ParameterVectorElement(θ[16]): -2.028888948827069,\n",
      "                              ParameterVectorElement(θ[17]): 0.3825263440080858},\n",
      "    'optimal_point': array([ 2.94918031,  1.06640662, -1.16841162, -0.92576409,  2.44691529,\n",
      "        1.6982912 , -0.84731764, -2.02888895,  0.38252634,  1.34572403,\n",
      "        0.14444186, -0.81868674, -1.82405473, -0.58272437, -1.2832899 ,\n",
      "        0.46245461,  0.85458612,  0.90092275]),\n",
      "    'optimal_value': -1.4029738769529685,\n",
      "    'optimizer_evals': 50,\n",
      "    'optimizer_time': 34.98536920547485}\n"
     ]
    }
   ],
   "source": [
    "from qiskit.circuit.library import RealAmplitudes\n",
    "from qiskit.algorithms.optimizers import COBYLA\n",
    "from qiskit.algorithms import NumPyMinimumEigensolver, VQE\n",
    "from qiskit.opflow import PauliExpectation, CVaRExpectation\n",
    "from qiskit import execute, Aer\n",
    "\n",
    "# set classical optimizer\n",
    "optimizer = COBYLA(maxiter=50)\n",
    "\n",
    "# set variational ansatz\n",
    "ansatz = RealAmplitudes(reps=1)\n",
    "\n",
    "# set the backend\n",
    "backend_name = \"aer_simulator\"\n",
    "backend = QuantumInstance(\n",
    "    Aer.get_backend(backend_name),\n",
    "    shots=8192,\n",
    "    seed_transpiler=algorithm_globals.random_seed,\n",
    "    seed_simulator=algorithm_globals.random_seed,\n",
    ")\n",
    "\n",
    "counts = []\n",
    "values = []\n",
    "\n",
    "\n",
    "def store_intermediate_result(eval_count, parameters, mean, std):\n",
    "    counts.append(eval_count)\n",
    "    values.append(mean)\n",
    "\n",
    "\n",
    "# initialize CVaR_alpha objective with alpha = 0.1\n",
    "cvar_exp = CVaRExpectation(0.1, PauliExpectation())\n",
    "\n",
    "# initialize VQE using CVaR\n",
    "vqe = VQE(\n",
    "    expectation=cvar_exp,\n",
    "    optimizer=optimizer,\n",
    "    ansatz=ansatz,\n",
    "    quantum_instance=backend,\n",
    "    callback=store_intermediate_result,\n",
    ")\n",
    "\n",
    "result = vqe.compute_minimum_eigenvalue(qubit_op)\n",
    "print(result)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "7d51e6b4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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gxQHN7c8X6LChVI1ZGIRxg90bHGyK6KkRiAKqfnU19GSbp5G28D/7Kgl3R9++CHWrl2LDz74ADKZDH/729+wfft2PP/886ipqbHbcfV6PaZPn47Zs2d3+jl9+vTB6tWrcerUKezfvx/x8fEYN24crl1r2pvk7rvvhsFgwK5du3DixAmkpKTg7rvvRklJiT3eBukAv5Q70X71NM1xx9nnhku7TxVWA3D8pnvXc/QmfNwozai+ofBXuNfomz1YndRcvnzZHnF4HG6vmnpqaslz5JJuTl5eHr90W6FQQK1WAwBmzpyJr7/+2m7HXbJkCebPn49BgwZ1+jkPPvggxo4di169emHAgAFYuXIlVCoV35SzvLwcly5dwiuvvILk5GT07t0by5cvR11dHU6fPm2vt0LaoG0w4miueWPH2/o4JqnhipH3X3KvpEbbYMSFEvP/m0InNY7chI9lWfzYmNRMHkyrnjrD6qQmMTERo0ePxhdffAGt1vEbELkLBTW1bEEtwPRTREQEv6NwbGwsDh8+DMDcE6q1JpfOQq/XY+3atfD390dKSgoAIDg4GH379sXnn3+O2tpaGAwGfPLJJwgLC8OQIUNafR2dTgeVSmVxIbZx7EoldAYTIvy8kBDqmN1vb+4VDImIQV5lHfIq6hxyTEc4X6JGg5FFkI8MPQIUgsbCjdRcKtNA1Wx02R7S86pQWF0PH5kYY5LC7Xosd2F1UpOeno7k5GQsWLAAERERePrpp3H06FF7xObWvBv3qaHppybNExlHrX66/fbb8dNPPwEAHn30UcyfPx933HEHZsyYgXvvvdchMVhj69at8PX1hZeXF959911s374dISHmb+cMw2DHjh3IyMiAUqmEl5cXVq5ciW3btiEwsPUi1WXLllns0RMTE+PIt+PW9l9qWsrtqMJWX7mEL0jel+0+LRNONevMLXR7gFClHNGBCrAskJVvvylqoGnqafyACP6LMGmf1UnN4MGD8d5776GoqAjr169HcXExRowYgYEDB2LlypUW8/ukbTRS05LGgfvUcNauXYtXX30VADBnzhysX78e/fr1w5tvvomPPvrIqtd65ZVXwDBMu5fz5893K97Ro0cjMzMTBw8exIQJE3DfffehrMzctZdlWcyZMwdhYWHYt28fjh49invuuQeTJk1CcXFxq6+3cOFC1NTU8Jf8/PxuxUea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\n",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "fig = plt.figure()\n",
    "\n",
    "plt.plot(counts, values)\n",
    "plt.ylabel(\"Conformation Energy\")\n",
    "plt.xlabel(\"VQE Iterations\")\n",
    "\n",
    "fig.add_axes([0.44, 0.51, 0.44, 0.32])\n",
    "\n",
    "plt.plot(counts[40:], values[40:])\n",
    "plt.ylabel(\"Conformation Energy\")\n",
    "plt.xlabel(\"VQE Iterations\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3000495a",
   "metadata": {},
   "source": [
    "### References"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c835b123",
   "metadata": {},
   "source": [
    "<font size='2'>[1] https://en.wikipedia.org/wiki/Levinthal%27s_paradox </font>\n",
    "\n",
    "<font size='2'>[2] A.Robert, P.Barkoutsos, S.Woerner and I.Tavernelli, Resource-efficient quantum algorithm for protein folding, NPJ Quantum Information, 2021, https://doi.org/10.1038/s41534-021-00368-4 </font>\n",
    "\n",
    "<font size=\"2\">[3] IUPAC–IUB Commission on Biochemical Nomenclature (1972). \"A one-letter notation for aminoacid sequences\". Pure and Applied Chemistry. 31 (4): 641–645. doi:10.1351/pac197231040639. PMID 5080161.</font> <br>\n",
    "\n",
    "<font size=\"2\">[4] https://en.wikipedia.org/wiki/Amino_acid</font>\n",
    "\n",
    "<font size=\"2\"> [5] S. Miyazawa and R. L.Jernigan, Residue – Residue Potentials with a Favorable Contact Pair Term and an Unfavorable High Packing Density Term for Simulation and Threading, J. Mol. Biol.256, 623–644, 1996, Table 3, https://doi.org/10.1006/jmbi.1996.0114 </font>\n",
    "\n",
    "<font size=\"2\"> [6] P.Barkoutsos, G. Nannichini, A.Robert, I.Tavernelli, S.Woerner, Improving Variational Quantum Optimization using CVaR, Quantum 4, 256, 2020, https://doi.org/10.22331/q-2020-04-20-256  </font>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "8f7e04a1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<h3>Version Information</h3><table><tr><th>Qiskit Software</th><th>Version</th></tr><tr><td>Qiskit</td><td>0.26.2</td></tr><tr><td>Terra</td><td>0.18.0.dev0+33e7448</td></tr><tr><td>Aer</td><td>0.8.2</td></tr><tr><td>Ignis</td><td>0.6.0</td></tr><tr><td>Aqua</td><td>0.9.1</td></tr><tr><td>IBM Q Provider</td><td>0.13.1</td></tr><tr><th>System information</th></tr><tr><td>Python</td><td>3.7.10 (default, Feb 26 2021, 10:16:00) \n",
       "[Clang 10.0.0 ]</td></tr><tr><td>OS</td><td>Darwin</td></tr><tr><td>CPUs</td><td>6</td></tr><tr><td>Memory (Gb)</td><td>16.0</td></tr><tr><td colspan='2'>Sat Aug 14 08:53:41 2021 CEST</td></tr></table>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div style='width: 100%; background-color:#d5d9e0;padding-left: 10px; padding-bottom: 10px; padding-right: 10px; padding-top: 5px'><h3>This code is a part of Qiskit</h3><p>&copy; Copyright IBM 2017, 2021.</p><p>This code is licensed under the Apache License, Version 2.0. You may<br>obtain a copy of this license in the LICENSE.txt file in the root directory<br> of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.<p>Any modifications or derivative works of this code must retain this<br>copyright notice, and modified files need to carry a notice indicating<br>that they have been altered from the originals.</p></div>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import qiskit.tools.jupyter\n",
    "\n",
    "%qiskit_version_table\n",
    "%qiskit_copyright"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
